module sha256 #(
    parameter DATA_WIDTH = 600
) (
    input  clk,
    input  rst_n,
    input  start,
    input  [DATA_WIDTH-1:0] in_data,
    output [255:0] sha_data,
    output finish
);

    localparam PADDING_WIDTH = (((DATA_WIDTH + 1 + 64) + 511) / 512) * 512;

    wire [PADDING_WIDTH-1:0] padding_data;

    padding#(.DATA_WIDTH(DATA_WIDTH)) u_padding (
        .in_data(in_data),
        .padding_data(padding_data)
    ); 

    compression#(.PADDING_WIDTH(PADDING_WIDTH)) u_compression (
        .clk(clk),
        .rst_n(rst_n),
        .start(start),
        .padding_data(padding_data),
        .sha_data(sha_data),
        .finish(finish)
    );

endmodule